Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Embodiments relate to software testing, and in particular, to prioritizing software testing in an adaptive manner.
Software programs typically undergo a battery of testing during their lifetimes. For example, software may evolve as problems are discovered and then fixed by patches, and also as new features are added. Integration testing refers to the testing of integrated parts of the software, for example the interaction between new/changed features and existing features.
Regression testing is the re-execution of some subset of test that has already been conducted. As integration testing proceeds, the total possible number of regression tests increases. However, it soon becomes impractical and inefficient to re-execute every test for every program function once a change is made to any part of the software.
Thus in order to improve testing efficiency, an order for performing regression testing may be prioritized. Test case prioritization techniques involve scheduling a repeat of test cases according to an order improving the performance and/or coverage of regression testing. In this context, prioritization techniques can take advantage of information gathered about the previous execution of test cases in order to obtain an efficient ordering of test cases.
The actual priority of every test may not be consistent, however. This is because new features are introduced to the software in an ongoing manner. Conventional approaches that manually adjusting a priority of each test, are labor intensive and consume effort and expense. Manual test prioritization may also introduce misjudgment based upon the inconsistent exercise of human discretion.